

/**
 * 表格接口
 * @param {*} data 组件返回参数，无需关注
 * @returns Promise<{ data: [], totalCount: number }> 
 */
function fetchDataList(data){
    console.log("表格数据参数:", data);
    const nano = ()=>Math.ceil(Math.random() * 100 * Date.now()).toString(32)
    const mockData = {
        data: new Array(data?.pageSize).fill(1).map(() => {
            const id = nano()
            return {
                name: `报警名称${id}`,
                triggerCondition: "报警触发条件报警触发条件报警触发条件报警触发条件",
                level: Math.ceil(Math.random() * 3),
                status: Math.ceil(Math.random() * 3),
                id: id
            }
        }),
        totalCount: 18
    }
    return Promise.resolve(mockData)
}


/**
 * 导出接口
 * @param {*} data 组件返回参数，无需关注
 * @returns Promise<{ fileData: file, fileName: string }>
 */
// function fetchExport(data) {
//     console.log("导出文件参数:", data)
//     return Promise.resolve({ fileData: null, fileName: "导出文件.xlsx" })
// }


/**
 * 新增/修改
 * @param {*} data 组件返回参数，无需关注
 * @returns Promise<void>
 */
function insertApi(data){
    console.log("新增或修改参数：", data);
    return Promise.resolve(true)
}


/**
 * 删除
 * @param {*} data 组件返回参数，无需关注
 * @returns Promise<void>
 */
// function deleteApi(data){
//     console.log("删除参数：",data);
//     return Promise.resolve(true)
// }





const alarmLevelDataSource = [
    { label: "一级", value: 1 },
    { label: "二级", value: 2 },
    { label: "三级", value: 3 }
]

/**
 * 表单项调用接口（异步获取报警等级）
 * @returns Promise<Array<{ label:string, value: string | number }>>
 */
function fetchAlarmLevel() {
    return new Promise((resolve)=>{
        setTimeout(()=>{
            resolve(alarmLevelDataSource)
        },1000)
    })
    // return Promise.resolve(alarmLevelDataSource)
}

function checkNumber(rule, value, cb){
    if (value>100) {
        return cb();
    }
    cb(new Error("请输入正确范围的数据"));
}

export function buildBasePage() {
    return {
        searchForm: {
            setterFormValue: [
                {
                    label: "关键字",
                    name: "keyword",
                    component: "Input",
                    placeholder: "请输入关键字",
                    type:"number",
                    rules:[
                        {validator: checkNumber, trigger: "change"},
                    ],
                    onChange:{
                        type:"js",
                        expression:`
                            function(val){
                                const time = field.getValue("time");
                                console.log("time:",time)
                            }
                        `
                    }
                },
                {
                    label:"报警时间",
                    name:"time",
                    component:"DatePicker",
                    placeholder:"选择报警时间"
                },
                {
                    label: "报警名称",
                    name: "id",
                    component: "Select",
                    placeholder: "请选择报警名称",
                    dataSource: [
                        { "label": "夜间疲劳驾驶A1", "value": 4 }, 
                        { "label": "车辆侧翻A", "value": 7 }, 
                        { "label": "疲劳驾驶A3", "value": 3 }, 
                        { "label": "夜间超速行为B2", "value": 10 }, 
                        { "label": "疲劳驾驶A1", "value": 1 }, 
                        { "label": "车辆侧翻A2", "value": 8 }, 
                        { "label": "疲劳驾驶A2", "value": 2 }, 
                        { "label": "夜间疲劳驾驶A2 ", "value": 5 }, 
                        { "label": "夜间疲劳驾驶A3", "value": 6 }, 
                        { "label": "夜间超速行为B3", "value": 11 }, 
                        { "label": "夜间超速行为B1", "value": 9 }
                    ]
                },
                {
                    label: "报警级别",
                    name: "level",
                    component: "Select",
                    placeholder: "请选择报警级别",
                    fetchData: fetchAlarmLevel
                },
            ],
            // searchBtnProps:{
            //     btnText:"查询呀",
            //     type:"info",
            //     class:"liuwei-search-button",
            //     // onClick:()=>{console.log('点击了查询')}
            // },
            // exportBtnProps: {
            //     btnText:"导出呀",
            //     onClick: fetchExport // 导出接口
            // }
        },
        // tableActionBtns: {
        //     align:"right",
        //     addBtnProps:{
        //         btnText: "新增呀",
        //         onClick: () => {
        //             console.log('点击新增按钮')
        //         }
        //     },
        //     btnList:[
        //         {
        //             btnText:"额外1",
        //             type:"warning",
        //             icon:"el-icon-edit",
        //             plain:true,
        //             onClick:()=>{
        //                 console.log("点击了额外1按钮")
        //             }
        //         },
        //         {
        //             btnText: "额外2",
        //             type: "success",
        //             icon: "el-icon-star-off",
        //             plain: true,
        //             onClick: () => {
        //                 console.log("点击了额外2按钮")
        //             }
        //         }
        //     ]
        // },
        table: {
            columns:[
                {
                    label: "报警名称",
                    name: "name",
                    minWidth:"150",
                },
                {
                    label: "报警触发条件",
                    name: "triggerCondition",
                    minWidth: "200"
                },
                {
                    label: "报警级别",
                    name: "level",
                    render: (row) => (alarmLevelDataSource || []).find(v => v.value == row.level).label,
                    minWidth: "80"
                },
                {
                    label: "状态",
                    name: "status",
                    // useSlot: true,
                    // <template v-slot:status="{ row }">
                    //     <el-tag :type="row.status == '1' ? 'success' : row.status == '2' ? 'warning' : 'info'">
                    //         {{ row.status == '1' ? '行驶' : row.status == '2' ? '停车' : '离线' }}
                    //     </el-tag>
                    // </template>
                }
            ],
            fetchDataList: fetchDataList,
            // deleteBtnProps: {
            //     btnText:"删除呀",
            //     onClick: deleteApi
            // },
            // updateBtnProps: {
            //     btnText:"修改呀",
            //     onClick:(row)=>{
            //         console.log("修改当前列，id为：",row?.id)
            //     }
            // },
            // actionColumns:{
            //     minWidth:"200",
            //     actionName:"自定义操作列名",
            //     actionBtns:[
            //         {
            //             btnText:"额外1",
            //             onClick:(row)=>{
            //                 console.log(row)
            //             }
            //         },
            //         {
            //             btnText:"额外2",
            //             onClick:(row)=>{
            //                 console.log(row)
            //             }
            //         },
            //     ]
            // }
        },
        dialogForm: {
            setterFormValue:[
                {
                    label: "报警名称",
                    name: "name",
                    component: "Input",
                    required: true,
                    placeholder: "请填写报警名称",
                },
                {
                    label: "报警级别",
                    name: "level",
                    component: "Select",
                    placeholder: "请选择报警项",
                    required: true,
                    dataSource: alarmLevelDataSource,
                },
                {
                    label: "状态",
                    name: "status",
                    component: "Select",
                    placeholder: "请选择报警项",
                    required: true,
                    dataSource: [{ label: "行驶", value: 1 }, { label: "停车", value: 2 }, { label: "离线", value: 3 }],
                },
                {
                    label:"触发条件",
                    component:"Input",
                    name:"triggerCondition",
                    type: "textarea",
                    placeholder: "请输入触发条件",
                    style: { width: "495px" },
                    maxlength: 150,
                }
            ],
            onOk: insertApi
        }
    }
}